/* Copyright 203-2115 AtomWare Technology Pty Limited
 *
 * Licensed under the Apache License, Version 2.0 (the "License");
 * you may not use this file except in compliance with the License.
 * You may obtain a copy of the License at
 *
 *     http://www.apache.org/licenses/LICENSE-2.0
 *
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * 
 * The flowing information must be keep 
 * NewableVisitor.java
 * business
 * 2012-11-26下午3:07:33
 * @author 屈甲康
 * QQ285799123
 * mailto:qujiakang@gmail.com
 */

package org.jackysoft.report.visitor;

import java.util.Collection;

import javax.annotation.PostConstruct;
import javax.annotation.Resource;

import org.jackysoft.entity.ArmItem;
import org.jackysoft.entity.ProductFresh;
import org.jackysoft.report.ItemUnit;
import org.jackysoft.report.DataItemType;
import org.jackysoft.report.DataItemUtil;
import org.jackysoft.service.ProductService;
import org.springframework.stereotype.Component;

@Component
public class NewableVisitor implements ArmItemVisitor{

	private DataItemUtil dutil = new DataItemUtil();
	private Double value;
	private ProductService productService;
	
	private Collection<ProductFresh> freshs;

	private int year;

	@PostConstruct
	public void init(){
		freshs = productService.getFreshs();
	}

	@Override
	public Double getValue() {
		return this.value;
	}

	@Override
	public void visite(ItemUnit item) {
		ArmItem aitem = (ArmItem) item;
		for(ProductFresh pf:freshs){
			if(pf.getYear()==this.year && pf.getProduct().equals(aitem.getHost())){
				aitem.setFreshed(true);
				Double dval = dutil.getDataItemAtom(aitem, DataItemType.local);
				this.value+=dval;
			}
		}
		
	}

	@Override
	public void setSource(ArmItem item) {
		// TODO Auto-generated method stub
		
	}

	@Override
	public ArmItem getSource() {
		// TODO Auto-generated method stub
		return null;
	}

	@Resource
	public void setProductService(ProductService productService) {
		this.productService = productService;
	}

	public int getYear() {
		return year;
	}

	public void setYear(int year) {
		this.year = year;
	}

}
